package Model;
import java.util.*;

import Model.IObserver;

public interface ITaskManager 
{
	public abstract ArrayList<Task> getTasks();
	public abstract void addTask(String taskName, Date taskDate, String iPeriodic,String iPeriodicFrequency);     //iPeriodic should be either "Single" OR "Periodic" OR "Complex"
                                                                                                                  //periodicFrequency should be either Daily, Weekly or Monthly or null
  public abstract void addSubTask(String parentTaskName, String taskName, String iPeriodic, String periodicFrequency, Date iDate) throws Exception;  //iPeriodic should be either "Single" OR "Periodic"
                                                                                                                          //periodicFrequency should be either Daily, Weekly or Monthly or null
	public abstract void deleteTask(String taskName) throws Exception;
  public abstract void deleteSubTask(String taskName) throws Exception;
	public abstract void setTaskStatus(boolean isTaskResolved, String taskName);
  public abstract void setSubTaskStatus(String taskName, boolean isTaskResolved);
	public abstract void registerObserver(IObserver ob);
	public abstract void undo();
	public abstract void redo();
}
